Computer systems today typically store a large amount of data in several files. The format for the files may be one of several different formats that are compatible with various applications, such as word processors, spreadsheets, and the like. Many times it is necessary to transmit a file to another computer so that another user may see or manipulate the data within the file. Sometimes, when the file is quite large, a transformation (e.g., compression) is performed on the file before sending the file to the other computer. By compressing the file, less bandwidth is needed to send the data to the other computer. In other situations, another transformation (e.g., encryption) may be performed to protect the data from being seen by unauthorized users.
Some of these transformations have specific encoding methods and use a separate file (e.g., dictionary) to store information about the specific encoding method. The separate file must be used when accessing the transformed file. If the separate file becomes corrupted, lost, or otherwise unavailable, the transformed file becomes useless. In addition, because some of these transformations define their own specific encoding methods for interleaving encoded data and processing information, once the file is transformed, the file can not be shared or have common processing performed on it. In addition, before transforming a file, current transformations require that the data within the file to be arranged in contiguous bytes. Ensuring that the bytes for the file remain contiguous consumes a lot of overhead and is not viable for files that are edited quite often. Thus, while these transformations are very useful, the way in which they are implemented do not offer a versatile experience to users.